<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <title>table模块快速使用</title>
  <link rel="stylesheet" href="../layui/dist/css/layui.css" media="all">
</head>
<style>
  /* #usertab{
        margin-top: 10px;
    } */
  .layui-form {
    margin-top: 10px;
    position: relative;
    height: 150px;
  }

  .layui-form-item {
    top: 15px;
    position: absolute;
  }

  .layui-form-item .layui-inline {
    flex: 1;
  }

  .layui-card-body {
    left: 20px;
    height: 30px;
  }

  .layui-table-cell{
    text-align:center;
    height: 50px;
  }

  /* .layui-form-item .layui-form-select{
      width: 200px;
    } */
</style>

<body>
  <div class="layui-fluid">
    <div class="layui-card">
      <div class="layui-form layui-card-header layuiadmin-card-header-auto">
        <form action="">
          <div class="layui-form-item">
            <div class="layui-inline">
              <label class="layui-form-label">活动ID</label>
              <div class="layui-input-block">
                <input type="text" name="activityId" placeholder="请输入" autocomplete="off" class="layui-input test1">
              </div>
            </div>
            <div class="layui-inline">
              <label class="layui-form-label">活动标题</label>
              <div class="layui-input-block">
                <input type="text" name="title" placeholder="请输入" autocomplete="off" class="layui-input test1">
              </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label">发起人ID</label>
                <div class="layui-input-block">
                  <input type="text" name="userId" placeholder="请输入" autocomplete="off" class="layui-input test1">
                </div>
              </div>
              <div class="layui-inline">
                <label class="layui-form-label">活动标签</label>
                <div class="layui-input-block" style="width: 200px;">
                  <select name="tagId">
  <!--                  <option value="0">不限</option>-->
  <!--                  <option value="1">学习心得</option>-->
  <!--                  <option value="2">校园生活</option>-->
  <!--                  <option value="3">情感分享</option>-->
  <!--                  <option value="4">兴趣爱好</option>-->
  <!--                  <option value="5">美食推荐</option>-->
  <!--                  <option value="6">科技创新</option>-->
                  </select>
                </div>
              </div>
            <div class="layui-inline">
              <label class="layui-form-label">归属院系</label>
              <div class="layui-input-block" style="width: 200px;">
                <select name="department">
<!--                  <option value="0">不限</option>-->
<!--                  <option value="1">学习心得</option>-->
<!--                  <option value="2">校园生活</option>-->
<!--                  <option value="3">情感分享</option>-->
<!--                  <option value="4">兴趣爱好</option>-->
<!--                  <option value="5">美食推荐</option>-->
<!--                  <option value="6">科技创新</option>-->
                </select>
              </div>
            </div>
                <div class="layui-inline">
                  <label class="layui-form-label">活动日期</label>
                  <div class="layui-input-inline">
                    <input type="text" class="layui-input act" name="startTime" data-type="startTime" id="startTime" placeholder="开始日期">
                  </div>
                  <div class="layui-form-mid">
                    -
                  </div>
                  <div class="layui-input-inline">
                    <input type="text" class="layui-input act" name="endTime" data-type="endTime" id="endTime" placeholder="结束日期">
                  </div>
                </div>

                <div class="layui-inline">
                  <label class="layui-form-label">活动状态</label>
                  <div class="layui-input-block" style="width: 200px;">
                    <select name="status">
                      <option value="-1">不限</option>
                      <option value="0">审核中</option>
                      <option value="1">未开始</option>
                      <option value="2">正在进行</option>
                      <option value="3">已结束</option>
                      <option value="4">已取消</option>
                      <option value="5">未通过</option>
                    </select>
                  </div>
                </div>

            <div class="layui-inline">
              <button class="layui-btn layuiadmin-btn-useradmin" lay-submit lay-filter="LAY-user-front-search">
                <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
              </button>
            </div>
          </div>
        </form>
      </div>

      <div class="layui-card-body">
        <div style="padding-bottom: 10px;">
          <button class="layui-btn layuiadmin-btn-useradmin" data-type="batchdel">删除</button>
          <button class="layui-btn layuiadmin-btn-useradmin" data-type="add">添加</button>
          <button class="layui-btn layuiadmin-btn-useradmin" data-type="edit">编辑</button>
        </div>


      </div>
      <table id="activitytab" lay-filter="activitytab"></table>
    </div>
  </div>

  <script src="./JS/utils/request.js"></script>
  <script src="./JS/utils/auth.js"></script>
  <script src="../layui/layui.all.js"></script>
  <script>
    layui.use(['form', 'table', 'layer'], function () {
      var table = layui.table;
      var form = layui.form;
      var $ = layui.$;
      var layer = layui.layer;
      const token = localStorage.getItem('token')
      //开始日期
var insStart = layui.laydate.render({
  elem: '#startTime',
  type:'datetime',
  format: 'yyyy-MM-dd HH:mm:ss'
  ,done: function(value, date){
	//自动弹出结束日期的选择器
   insEnd.config.elem[0].focus();
  }
});

//结束日期
var insEnd = layui.laydate.render({
  elem: '#endTime',
  type:'datetime',
  format: 'yyyy-MM-dd HH:mm:ss'
});

// 获取活动标签下拉菜单的动态请求列表
$.ajax({
        url: '/activities/getCategories', // 替换为实际接口地址
        type: 'GET',
        headers:{
              'Authorization':localStorage.getItem('token')
    },
        success: function(res) {
          console.log(res)
          if (res.code === 0) { // 根据实际接口返回状态码调整
            var selectHtml = '<option value="0">不限</option>';

            // 遍历返回数据生成option
            res.data.forEach(function(item) {
              selectHtml += '<option value="' + item.tagId + '">' + item.tagName + '</option>';
            });

            // 更新select内容
            $('select[name="tagId"]').html(selectHtml);

            // 重新渲染表单
            form.render('select');
          }
        },
        error: function(xhr, status, error) {
          console.error('分类数据获取失败:', error);
        }
      });

      // 获取院系下拉菜单的动态请求列表
      $.ajax({
              url: '/activities/getDepartments', // 替换为实际接口地址
              type: 'GET',
              headers:{
              'Authorization':localStorage.getItem('token')
    },
              success: function(res) {
                console.log(res)
                if (res.code === 0) { // 根据实际接口返回状态码调整
                  var selectHtml = '<option value="0">不限</option>';

                  // 遍历返回数据生成option
                  res.data.forEach(function(item) {
                    selectHtml += '<option value="' + item.departmentId + '">' + item.departmentName + '</option>';
                  });

                  // 更新select内容
                  $('select[name="department"]').html(selectHtml);

                  // 重新渲染表单
                  form.render('select');
                }
              },
              error: function(xhr, status, error) {
                console.error('分类数据获取失败:', error);
              }
            });

      //第一个实例
      table.render({
        elem: '#activitytab'
        , title: '活动列表'
        , height: 500
        , url: '/activities/list'
        //数据接口
        , page: true //开启分页
        ,limits:[5,10]
        , cols: [[ //表头
          { type: 'checkbox', sort: true},
          { title: '序号', type: 'numbers', autoSort: true },
          { field: 'activityId', title: '活动ID', sort: true, }
          , { field: 'tagName', title: '活动标签'}
          , { field: 'departmentName', title: '归属院系'}
              ,{ field: 'title', title: '活动标题'}
              , { field: 'username', title: '发起人'}
              , { field: 'publishTime', title: '发布时间',  sort: true, }
          , { field: 'description', title: '活动描述'}
          , { field: 'startTime', title: '开始时间',  sort: true }
          , { field: 'endTime', title: '结束时间',sort:true}
          , { field: 'attachment', title: '内容附件',}
          , { field: 'video', title: '视频附件',}
          , { field: 'viewCount', title: '浏览量',  sort: true, }
          , { field: 'likeCount', title: '点赞量',  sort: true, }
          , { field: 'collectCount', title: '收藏量',  sort: true, }
          , { field: 'updateTime', title: '更新时间',  sort: true, }
              , { field: 'isGlobel', title: '可见范围', templet: function(d){

                      const statusMap = {
                          0: '<span style="color:#999">全校</span>',
                          1: '<span style="color:#ffb800">全院</span>'
                      }
                      return statusMap[d.isGlobel] || '未知状态';
                  }}
          , { field: 'status', title: '活动状态',  sort: true, templet: function(d){
                      const statusMap = {
                          0: '<span style="color:#FFE153">审核中</span>',
                          1: '<span style="color:#999">未开始</span>',
                          2: '<span style="color:#ffb800">正在进行</span>',
                          3: '<span style="color:#5fb878">已结束</span>',
                          4:'<span style="color:#999">已取消</span>',
                          5:'<span style="color:#FF2D2D">未通过</span>'
                      }
                      return statusMap[d.status] || '未知状态';
                  }}
        ]],
        headers: {
       'Authorization': token
  }
        , parseData: function (res) { //res 即为原始返回的数据
          // console.log(res)
          return {
            "code": res.code, //解析接口状态
            "msg": res.msg, //解析提示文本
            "count": res.data.totalCount, //解析数据长度
            "data": res.data.list //解析数据列表
          }
        }
        //
        , done: function () {
          $(".layui-table-main tr").each(function (index, val) {
            $(".layui-table-fixed").each(function () {
              $($(this).find(".layui-table-body tbody tr")[index]).height($(val).height());
            });
          });
          $(".layui-table-header tr").each(function (index, val) {
            $(".layui-table-fixed").each(function () {
              $($(this).find(".layui-table-header thead tr")[index]).height($(val).height());
            });
          });
        }

      })
      form.on('submit(LAY-user-front-search)', function (data) {
        // layer.msg(JSON.stringify(data.field));
        // console.log(data.field);

        // 执行表格重载（带参数）
        table.reload('activitytab', {
          where: {
            activityId: data.field.activityId,
            userId: data.field.userId,
            title: data.field.title,
            tagId: data.field.tagId,
            departmentId:data.field.department,
            startTime:data.field.startTime,
            endTime:data.field.endTime,
            status:data.field.status
          },    // 查询参数
          method: 'get',
          headers:{
              'Authorization':localStorage.getItem('token')
    },
          page: { curr: 1 }      // 重置到第一页
        });

        return false;
      });


      // 表格复选框点击删除监听事件
      $('button[data-type="batchdel"]').click(function () {
        var checkData = table.checkStatus('activitytab').data;
        // 提取userId生成数组
        var activityIds = checkData.map(function (item) {
          return item.activityId;
        });
        // 转换为逗号分隔字符串
        var activityIdsStr = activityIds.join(',');
        console.log(activityIdsStr)
        if (activityIds.length === 0) {
          layer.msg('请至少选择一项');
          return;
        }
        deleteActivity(activityIdsStr)
      })

      // 新增信息监听事件
      $('button[data-type="add"]').click(function () {
        layer.open({
          type: 2,
          title: '新增活动',
          content: './edit.html',
          area: ['580px', '620px'],
          btn: ['确认', '取消'],
          yes: function (index,layero) {
            // console.log(layero)
            // 获取iframe窗口对象
            var iframeWin = layero.find('iframe')[0].contentWindow;

            // 调用子页面的提交方法
            iframeWin.submitForm(function(success){
              if(success){
                layer.close(index);
                layer.msg('提交成功');
                table.reload('activitytab', {
                  // 不传递任何参数，自动保留当前查询条件和分页状态
                  page: {
                    curr: 1
                  }
                });
              }
            });

          },
          btn2: function (index, layero) {
            //按钮【按钮二】的回调

            //return false 开启该代码可禁止点击该按钮关闭
          }
        })
      })

      // 编辑事件监听
      $('button[data-type="edit"]').click(function(){
        var checkData = table.checkStatus('activitytab').data;
        // console.log(checkData)
        // 验证选择数量
        if(checkData.length !== 1){
          return layer.msg('请选择一条要编辑的数据');
        }else{
          // 获取学号
          var activityId = checkData[0].activityId;

          // 打开弹出层
          layer.open({
            type: 2,
            title: '修改活动信息 - 活动ID：' + activityId,
            content: 'edit.html?activityId=' + activityId,
            area: ['800px', '600px'],
            btn: ['保存', '取消'],
            yes: function (index,layero) {
              // console.log(layero)
              // 获取iframe窗口对象
              var iframeWin = layero.find('iframe')[0].contentWindow;

              // 调用子页面的提交方法
              iframeWin.updateForm(function(success){
                if(success){
                  layer.close(index);
                  layer.msg('更新成功');
                  table.reload('activitytab', {
                    // 不传递任何参数，自动保留当前查询条件和分页状态
                    page: {
                      curr: 1
                    }
                  });
                }
              });

            },
            success: function(layero, index){
              // 获取iframe窗口对象
              var iframeWin = layero.find('iframe')[0].contentWindow;
                // console.log(checkData[0])
              // 传递选中数据到子页面
              iframeWin.initFormData(checkData[0]);
            }
          });
        }


      });

      // 彻底删除用户函数
      function deleteActivity(activityIdsStr) {
        layer.confirm('确定删除该用户？', function (index) {
          $.ajax({
            url: '/activities/delete/' + activityIdsStr, // 路径参数
            type: 'DELETE',
            headers:{
              'Authorization':localStorage.getItem('token')
    },
            success: function (res) {
              layer.msg('删除成功', { icon: 1 });
              // 刷新表格数据
              layui.table.reload('activitytab');
            },
            error: function (xhr) {
              layer.msg('删除失败: ' + xhr.statusText, { icon: 2 });
            }
          });
          layer.close(index);
        });
      }
    });
  </script>
  <script>

  </script>
</body>

</html>